#pragma once

#pragma once
#include <vector>
#include "GameObjectManager.h"
#include "CameraManager.h"
#include "LightManager.h"



// a 3D gameworld. inckudes lights, cameras, gameobject managers etc
// should be instanced to a singleton when extended!
class World
{
public:
	World(void);
	virtual ~World(void);

	LightManager Lights;
	CameraManager Cameras;

	virtual void Init();
	virtual void Update();
	virtual void Render();
	virtual void RenderBackground();

	virtual void Add(GameObjectManager* objectManager);
	virtual void Add(GameObject* worldObject);

protected:

	// all of our world object managers. we can batch update and render them!
	vector<GameObjectManager*> WorldManagers;
	GameObjectManager *WorldObjects;

	void DestroyAllObjects();
};